// import axios from "axios";
import Nprogress from "nprogress";
import "nprogress/nprogress.css";
//axios二次封装:如果用户登录成功获取用户信息---需要仓库里面token
//引入仓库
import store from '@/store';

//禁止小圆圈加载
Nprogress.configure({ showSpinner: false });

let request = axios.create({
  baseURL: "/api",
  timeout: 5000,
});
import { getUserUUID } from "@/utils/userTempId";

request.interceptors.request.use(
  (config) => {
    //项目每一次请求触发:通过请求头携带用户的身份标识
    //下面这种写法不可取，因为大家[1个小目标]，人的身份相同的！！！！！
    //uuid:插件生成用户(未登录)临时身份(唯一)

    //coonfig:配置对象最重要的一件事情，请求头 [给服务器携带公共参数]
    config.headers.userTempId = getUserUUID();
   
     //如果登录成了vuex仓库就有了token，登录已有其余的请求需要请求头携带token
    if(store.state.user.token){
      config.headers.token = store.state.user.token;
    }

    Nprogress.start();
    return config;
  },
  (error) => {
    return Promise.reject(error);
  }
);
request.interceptors.response.use(
  (req) => {
    if (req.status === 200) {
      Nprogress.done();
      return req.data;
    } else {
      alert("状态码非200");
    }
  },
  (error) => {
    if (error.code === "ERR_BAD_REQUEST") {
      alert(error.message);
    }
    return Promise.reject(error);
  }
);

export default request;
